package com.service;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;

import com.dao.IBisMItemDao;
import com.icim.service.ICIMBaseService;
import com.model.Bis_m_item;
import com.tx.Xpiiteml.XpiitemLI;
import com.tx.Xpiiteml.XpiitemLO;
import com.tx.Xpiiteml.XpiitemLOA;
import com.util.MqOpe;

@Scope("prototype")
@Service("XpiitemlService")
public class XpiitemlService extends ICIMBaseService{
	
	
	@Autowired
	private IBisMItemDao bisMItemDao;
	
	private Logger logger = Logger.getLogger(XpiitemlService.class);
	//Global variables 
	private String gszMsgBuf ="";
	private long lRc ;
	
	public String subMainProc(String strInMsg){
		MqOpe mqOpe1 = new MqOpe();
		XpiitemLI xpiitemLI = new XpiitemLI();
		XpiitemLO xpiitemLO = new XpiitemLO();
		String reply ="";
		xpiitemLI = (XpiitemLI) mqOpe1.inStr2Obj(strInMsg,xpiitemLI);
		logger.info("InTrx is "+ strInMsg );
		
		String actionFlg =xpiitemLI.getAction_flg();
		if(actionFlg.equals("I")){
			xpiitemLO  = SubGetMLItem( xpiitemLI );
		}
		reply = mqOpe1.obj2Str(xpiitemLO);
		logger.info(reply);
		return reply;
	}
	public XpiitemLO SubGetMLItem(XpiitemLI xpiitemLI){
		XpiitemLO xpiitemLO = new XpiitemLO();
		String tool_id  = xpiitemLI.getTool_id();
		String rep_unit = xpiitemLI.getRep_unit();
		String data_pat = xpiitemLI.getData_pat();
		String mes_id   = xpiitemLI.getMes_id();
		List<XpiitemLOA> oaryList = new ArrayList<XpiitemLOA>();
		String sql = "FROM Bis_m_item where id.tool_id_fk = '"+tool_id + "' and id.rep_unit_fk='"
		              + rep_unit + "' and id.data_pat_fk='" + data_pat +"' and id.mes_id_fk='"
		              + mes_id +"'";
		List<Bis_m_item> bisMItemList = bisMItemDao.find(sql);
		if(bisMItemList.size()==0){
			gszMsgBuf = "not found record from Bis_m_item sql[" + sql +"]";
			xpiitemLO.setTrx_id("XPIITEML");
			xpiitemLO.setType_id("O");
			xpiitemLO.setRtn_code("0000002");
			xpiitemLO.setRtn_msg(gszMsgBuf);
 			return xpiitemLO ;
		}
		for(Bis_m_item bis_m_item :bisMItemList){
			XpiitemLOA oary = new XpiitemLOA();
			oary.setData_id(bis_m_item.getId().getData_id());
			oary.setData_group(bis_m_item.getData_group());
			oary.setData_dsc(bis_m_item.getData_dsc());
			oaryList.add(oary);
			xpiitemLO.setTbl_cnt(Integer.toString(oaryList.size()));
			xpiitemLO.setOary(oaryList);
		}
		xpiitemLO.setTrx_id("XPIITEML");
		xpiitemLO.setType_id("O");
		xpiitemLO.setRtn_code("0000000");
		xpiitemLO.setRtn_msg(gszMsgBuf);
		return xpiitemLO;
	}
	
	
	
}
